package com.cqupt.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface NetworkSearchService {
    // 创建自动注册Windows类型主机(测试)
    public void creatNetworkRuleForWindows();
    // 创建自动注册Linux类型主机（测试）
    public void creatNetworkRuleForLinux();

    /**
     * 创建指定IP字段自动发现规则（非网络设备）
     * @param name 规则名称
     * @param iprange   规则ip段
     * @param type  规则类型
     * @param SNMP_comminity    若是网络设备，对应网络社区号
     * @return
     */
    public Map<String, Object> creatNetworkRlueByIPRange(String name,String iprange, String type, String SNMP_comminity) throws IllegalAccessException;
    // 创建指定IP字段自动发现规则（SNMPv2）
    //public void creatNetworkRlueByIPRangeForSNMP(String iprange,String SNMP_comminity);
    // 删除网络发现规则
    public void deleteNetworkRlueByIDs(List<String> ids);

    /**
     * 删除网络发现规则
     * @param id 网络发现规则id
     * @return
     */
    public boolean deleteNetworkRlueByID(String id);

    /**
     * 修改网络发现规则（非网络设备）
     * @param id 网络发现规则id
     * @param iprange 网络发现规则ip段
     * @return 修改成功true,失败为false
     */
    public boolean updateNetworkRlueByIPRange(String id,String iprange);

    /**
     * 修改规则(SNMP)
     * @param id 网络发现规则id
     * @param iprange 网络发现规则ip段
     * @param SNMP_comminity 网络发现规则社区列表
     * @return
     */
     public boolean updateNetworkRlueByIPRangeForSNMP(String id, String iprange,String SNMP_comminity);

    /**
     * 获取所有自动发现规则发现的主机
     * @param ruleClass
     * @param ipSet
     * @return
     */
    public List<Map<String, Object>> serachAllNetRuleAgents(Map<String, Object> ruleClass, Set<String> ipSet);

    /**
     * 获取所有自动发现规则(类别划分)
     * @return
     */
    public Map<String, Object> serachAllNetRule();

    /**
     * 获取所有自动发现规则详情
     * @return
     */
    public List<Map<String, Object>> getAllNetRuleDetails();

    /**
     * 自动规则的启用/禁用
     * @param id
     * @param status
     * @return
     */
    public boolean updateNetworkRuleStatus(String id, String status);
    // 获得各类规则类型的数量及状态
    public Map<String, Object> getAllNetworkRuleNumAndStatus();

    /**
     * 从配置文件中读取community配置
     * @return
     */
    List<Map<String, Object>> getAllSNMPCommunityByXML();
}
